<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /**
       * 生成器函数，当调用生成器函数时，并不会立即执行改函数，而是返回一个生成器对象。
       * 每当调用生成器对象的next()方法时，函数将运行到下一个yield表达式，返回表达式结果并暂停自身。
       * 当抵达生成器函数的末尾时，返回结果中的done的值为true，value值为undefined
       * 
       * 普通函数使用function声明，生成器函数用function*声明
       * 普通函数使用return返回值，生成器函数使用yield返回值
       * 普通函数是run to completion模式，即普通函数开始执行后，会一直执行到该函数所有语句完成，
       * 在此期间别的代码语句是不会被执行的
       * 生成器函数是 run-pause-run 模式，即生成器函数可以在函数运行中被暂停一次或多次，并且在后面
       * 再恢复执行，在暂停期间允许其他代码语句被执行
       */
    </script>
  </body>
</html>